package cn.fl.capital.transform;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.capital.dto.CapPayInfoDTO;
import cn.fl.capital.vo.CapPayInfoVO;

import java.util.ArrayList;
import java.util.List;

 /**
 * @Description: 付款信息表 转换器
 * VO是客户端传递数据到服务端进行转换的数据 
 * VO转换数据变成DTO传递到服务端 
 * VO不能在服务端出现
 */
public class CapPayInfoVOTransform {


	/**
	 * DTO 转  VO
	 * @param dto CapPayInfoDTO
	 * @return CapPayInfoVO
	 */
	public static CapPayInfoVO toVO(CapPayInfoDTO dto) {
		CapPayInfoVO  vo = null;
		if (dto != null) { 
			vo = new CapPayInfoVO();
			vo.setId(dto.getId());
			vo.setPrjId(dto.getPrjId());//项目ID
			vo.setPrjPrdId(dto.getPrjPrdId());//项目产品ID
			vo.setPrjPrdDtlId(dto.getPrjPrdDtlId());//项目产品明细ID
			vo.setContNo(dto.getContNo());//合同号
			vo.setSalContNo(dto.getSalContNo());//买卖合同号
			vo.setPaySchId(dto.getPaySchId());//支付表ID
			vo.setPaySchNo(dto.getPaySchNo());//支付表号
            vo.setInitPayAmt(dto.getInitPayAmt());//首付款
            vo.setPrdAmt(dto.getPrdAmt());//设备款
			vo.setPrjTypCd(dto.getPrjTypCd());//项目类型
			vo.setCstId(dto.getCstId());//客户ID
			vo.setCstNm(dto.getCstNm());//客户名称
			vo.setSplId(dto.getSplId());//供应商ID
			vo.setSplNm(dto.getSplNm());//供应商名称
			vo.setIsFstCol(dto.getIsFstCol());//是否首期代收
			vo.setPayStsCd(dto.getPayStsCd());//付款状态（CAP0008）: 未申请，申请中，已放款
			vo.setPayTypCd(dto.getPayTypCd());//付款类型（CAP0009）: 正常放款,提前付款,特殊放款
			vo.setPayer(dto.getPayer());//付款方
			vo.setPayerAccNo(dto.getPayerAccNo());//付款方银行账号
			vo.setPayerBkNm(dto.getPayerBkNm());//付款方开户行
			vo.setPayAmt(dto.getPayAmt());//应付金额
			vo.setActPayAmt(dto.getActPayAmt());//实付金额
			vo.setActPayTm(dto.getActPayTm());//实际付款时间
			vo.setExpPayTm(dto.getExpPayTm());//预计付款时间
			vo.setPayRem(dto.getPayRem());//付款备注
			vo.setPayPid(dto.getPayPid());//付款父ID
			vo.setPrInsId(dto.getPrInsId());//流程实例ID
			vo.setCstMgrId(dto.getCstMgrId());//客户经理ID
			vo.setCstMgrNm(dto.getCstMgrNm());//客户经理名称
			vo.setCstMgrOrgCd(dto.getCstMgrOrgCd());//客户经理组织架构Cd
			vo.setBuOrgCd(dto.getBuOrgCd());//所属事业部（组织架构）
			vo.setIsValid(dto.getIsValid());//是否有效（1：是，0：否）
			vo.setIsDel(dto.getIsDel());//是否删除（1：是，0：否）
            vo.setFundUse(dto.getFundUse());//资金用途
            vo.setIsUrgent(dto.getIsUrgent());//是否加急
            vo.setIsGrp(dto.getIsGrp());
            vo.setPrInsNo(dto.getPrInsNo());//流程编号-YAOXIURONG
			vo.setMinusAmt(dto.getMinusAmt());
			vo.setAudStsCd(dto.getAudStsCd());
			vo.setIsNew(dto.getIsNew());
			vo.setInsCode(dto.getInsCode());
			vo.setBizTypCd(dto.getBizTypCd());
			vo.setOvdAmt(dto.getOvdAmt());
			vo.setOvdDay(dto.getOvdDay());
			vo.setApplyResCd(dto.getApplyResCd());
			vo.setApplyDt(dto.getApplyDt());
			vo.setIsOtherNoPass(dto.getIsOtherNoPass());
			vo.setThdPayAmt(dto.getThdPayAmt());
			vo.setThdPayDt(dto.getThdPayDt());

			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getMdfUsrId());//修改人
			vo.setFundRasInsId(dto.getFundRasInsId());//第三方机构(金融机构)id
			vo.setFundRasInsNm(dto.getFundRasInsNm());//第三方机构(金融机构)名称
			vo.setIsSplMfr(dto.getIsSplMfr());// 是否厂商业务
			vo.setCstMgrRgnCd(dto.getCstMgrRgnCd());
			vo.setIsInsBiz(dto.getIsInsBiz());//是否资管业务
			if(null != dto.getBizFlag()){
				vo.setBizFlag(dto.getBizFlag());//业务标识("PRJ0006")
			}
			if(CollectionUtils.isNotEmpty(dto.getSupportFlowList())){
			    vo.setSupportFlowList(CapPayTypNmValVOTransform.toVOList(dto.getSupportFlowList()));
            }
			vo.setRgnProvCd(dto.getRgnProvCd());
			vo.setRgnCityCd(dto.getRgnCityCd());
			vo.setCutPaySchId(dto.getCutPaySchId());
			vo.setCutPaySchNo(dto.getCutPaySchNo());
			vo.setCutPayStsCd(dto.getCutPayStsCd());
			vo.setCutActPayAmt(dto.getCutActPayAmt());
			vo.setYqApplyDate(dto.getYqApplyDate());
			vo.setResultesc(dto.getResultesc());
			vo.setLoanInsNm(dto.getLoanInsNm());
			vo.setIsOutInsLoan(dto.getIsOutInsLoan());
			vo.setInsLoanTm(dto.getInsLoanTm());
			vo.setInsLoanSum(dto.getInsLoanSum());
			vo.setLoanInsCode(dto.getLoanInsCode());
			vo.setReceiveState(dto.getReceiveState());
			vo.setReceiveStateNm(dto.getReceiveStateNm());
			vo.setReceiveUsrNm(dto.getReceiveUsrNm());
			vo.setSendTm(dto.getSendTm());
			vo.setReceiveTm(dto.getReceiveTm());
			vo.setSubmitTm(dto.getSubmitTm());
			vo.setProcDefKey(dto.getProcDefKey());
			vo.setBookId(dto.getBookId());
			vo.setBookTypeCd(dto.getBookTypeCd());
		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param vo CapPayInfoVO
	 * @return CapPayInfoDTO
	 */
	public static CapPayInfoDTO toDTO(CapPayInfoVO vo) {
		CapPayInfoDTO dto = null;
		if (vo != null) {
			dto = new CapPayInfoDTO();
			dto.setId(vo.getId());
			dto.setPrjId(vo.getPrjId());//项目ID
			dto.setPrjPrdId(vo.getPrjPrdId());//项目产品ID
			dto.setPrjPrdDtlId(vo.getPrjPrdDtlId());//项目产品明细ID
			dto.setContNo(vo.getContNo());//合同号
			dto.setSalContNo(vo.getSalContNo());//买卖合同号
			dto.setPaySchId(vo.getPaySchId());//支付表ID
			dto.setPaySchNo(vo.getPaySchNo());//支付表号
			dto.setPrjTypCd(vo.getPrjTypCd());//项目类型
            dto.setInitPayAmt(vo.getInitPayAmt());//首付款
            dto.setPrdAmt(vo.getPrdAmt());//设备款
			dto.setCstId(vo.getCstId());//客户ID
			dto.setCstNm(vo.getCstNm());//客户名称
			dto.setSplId(vo.getSplId());//供应商ID
			dto.setSplNm(vo.getSplNm());//供应商名
			dto.setIsFstCol(vo.getIsFstCol());//是否首期代收
			dto.setPayStsCd(vo.getPayStsCd());//付款状态（CAP0008）: 未申请，申请中，已放款
			dto.setPayTypCd(vo.getPayTypCd());//付款类型（CAP0009）: 正常放款,提前付款,特殊放款
			dto.setPayer(vo.getPayer());//付款方
			dto.setPayerAccNo(vo.getPayerAccNo());//付款方银行账号
			dto.setPayerBkNm(vo.getPayerBkNm());//付款方开户行
			dto.setPayAmt(vo.getPayAmt());//应付金额
			dto.setActPayAmt(vo.getActPayAmt());//实付金额
			dto.setActPayTm(vo.getActPayTm());//实际付款时间
			dto.setExpPayTm(vo.getExpPayTm());//预计付款时间
			dto.setPayRem(vo.getPayRem());//付款备注
			dto.setPayPid(vo.getPayPid());//付款父ID
			dto.setPrInsId(vo.getPrInsId());//流程实例ID
			dto.setCstMgrId(vo.getCstMgrId());//客户经理ID
			dto.setCstMgrNm(vo.getCstMgrNm());//客户经理名称
			dto.setCstMgrOrgCd(vo.getCstMgrOrgCd());//客户经理组织架构Cd
			dto.setBuOrgCd(vo.getBuOrgCd());//所属事业部（组织架构）
			dto.setIsValid(vo.getIsValid());//是否有效（1：是，0：否）
			dto.setIsDel(vo.getIsDel());//是否删除（1：是，0：否）
            dto.setFundUse(vo.getFundUse());//资金用途
            dto.setIsUrgent(vo.getIsUrgent());//是否加急
            dto.setIsGrp(vo.getIsGrp());
			dto.setMinusAmt(vo.getMinusAmt());
			dto.setApplyResCd(vo.getApplyResCd());
			dto.setApplyDt(vo.getApplyDt());
			dto.setIsOtherNoPass(vo.getIsOtherNoPass());

			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getMdfUsrId());//修改人
			dto.setCurrentUsrId(vo.getCurrentUsrId());
			dto.setIsSplMfr(vo.getIsSplMfr());// 是否厂商业务
			dto.setCstMgrRgnCd(vo.getCstMgrRgnCd());
			if(null != vo.getBizFlag()){
				dto.setBizFlag(vo.getBizFlag());//业务标识("PRJ0006")
			}

            dto.setPayeeList(CapPayeeInfoVOTransform.toDTOList(vo.getPayeeList()));//收款方
			dto.setCutPaySchId(vo.getCutPaySchId());
			dto.setCutPaySchNo(vo.getCutPaySchNo());
			dto.setCutPayStsCd(vo.getCutPayStsCd());
			dto.setCutActPayAmt(vo.getCutActPayAmt());
			dto.setYqApplyDate(vo.getYqApplyDate());
			dto.setResultesc(vo.getResultesc());
			dto.setLoanInsNm(vo.getLoanInsNm());
			dto.setIsOutInsLoan(vo.getIsOutInsLoan());
			dto.setInsLoanTm(vo.getInsLoanTm());
			dto.setInsLoanSum(vo.getInsLoanSum());
			dto.setLoanInsCode(vo.getLoanInsCode());
		}
		return dto;
	}
	
	/**
	 * DTO集合 转 VO集合
	 * @param list List<CapPayInfo>
	 * @return List<CapPayInfoDTO>
	 */
	public static List<CapPayInfoVO> toVOList(List<CapPayInfoDTO> list) {
		List<CapPayInfoVO>  voList = new ArrayList<CapPayInfoVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (CapPayInfoDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}
}
